package com.ibeeking.found.cms.cp.rest.service;

import com.ibeeking.found.cms.service.common.bo.PageTemplateBaseBO;
import com.ibeeking.found.cms.service.common.constants.enums.PageCategoryEnum;
import com.ibeeking.found.cms.service.common.param.PageTemplateBaseParam;
import com.ibeeking.found.cms.service.common.param.PageToTemplateParam;
import com.ibeeking.found.cms.service.common.query.PageBasePageQuery;
import com.ibeeking.found.cms.service.common.query.PageBaseQuery;
import com.ibeeking.found.cms.service.common.vo.PageBaseVO;
import com.ibeeking.found.common.entity.CurrentUser;
import com.ibeeking.found.common.enums.cms.PageTemplateTypeEnum;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;
import java.util.Set;


/**
 * IPageBaseService
 *
 * @Author ibeeking
 * @Date 2021-05-08 16:05
 */
public interface IPageTemplateBaseService {

    /***
     * 查询列表
     */
    List<PageBaseVO> list(PageBaseQuery pageBaseQuery);

    /***
     * 分页查询
     */
    Page<PageBaseVO> pageList(PageBasePageQuery pageBasePageQuery, CurrentUser currentUser);

    /***
     * 新增
     */
    Long add(PageTemplateBaseParam pageTemplateBaseParam);

    /***
     * 修改
     */
    Long modify(PageTemplateBaseParam pageTemplateBaseParam);

    /***
     * 通过id查询
     */
    PageBaseVO view(Long id);

    /***
     * 通过id查询
     */
    PageTemplateBaseBO selById(Long id);

    List<PageTemplateBaseBO> selById(Set<Long> ids);


    PageTemplateBaseBO selByPageCategory(PageCategoryEnum pageCategoryEnum);

    /***
     * 修改状态
     */
    Boolean changeStatus(Long id, Integer status);

    /***
     * 通过id删除
     */
    Boolean del(Long id);

    /**
     * 页面设置为我的模板
     *
     * @param param
     * @return
     */
    Boolean saveToMyTemplate(PageToTemplateParam param);

    /**
     * 页面设置为模板
     *
     * @param param
     * @return
     */
    Boolean saveToTemplate(PageToTemplateParam param, PageTemplateTypeEnum pageTemplateTypeEnum);
}